package br.edu.com1263.action;

import java.util.Collection;
import br.edu.com1263.model.Curso;
import br.edu.com1263.model.Disciplina;
import br.edu.com1263.negocio.CursoFacade;
import br.edu.com1263.negocio.DisciplinaFacade;

import com.opensymphony.xwork2.ActionSupport;



public class DisciplinaAction extends ActionSupport
{
	/**
	 * 
	 */
	private static final long serialVersionUID = -3880661407381340888L;
	private DisciplinaFacade disciplinaFacade;
	private CursoFacade cursoFacade;
	
	private String editar;
	private String remover;
	private String adicionar;
	private String consultar;
	private String menu;
	
	private String nomeDisciplina;
	private String codDisciplina;
	
	private Long id;
	private Long idDisciplina;
	private Long idCurso;
	private Collection<Disciplina> disciplinas = null;
	private Collection<Curso> cursos = null;

	public DisciplinaAction(DisciplinaFacade disciplinaFacade, CursoFacade cursoFacade) {
		this.disciplinaFacade = disciplinaFacade;
		this.cursoFacade = cursoFacade;
	}
//----------------------------------------------------
//				Acoes
//----------------------------------------------------	
	@Override
	public String execute() throws Exception {
		clearErrorsAndMessages();
	
		if(adicionar != null){
            adicionar = null; 
            Disciplina disciplina = new Disciplina(codDisciplina, nomeDisciplina);
            disciplina.setId(null); 
            Curso curso = cursoFacade.consultar(idCurso);           
            disciplina.setCurso(curso);
            disciplinaFacade.salvar(disciplina);
            
            disciplinas = disciplinaFacade.consultarTodos();
			addActionMessage("A disciplina foi adicionada corretamente.");
			return "view";
        }
		
		if (consultar != null){
			consultar = null;
			if (idDisciplina == null)
			{
				addActionMessage("Uma disciplina deve ser selecionada.");
				return "view";
			}
			Disciplina d = disciplinaFacade.consultar(idDisciplina);
			if(d != null){
				id = d.getId();
				nomeDisciplina = d.getNomeDisciplina();
				codDisciplina = d.getCodDisciplina();
			}
			return "view";
		}
		
		if(editar != null){
			editar = null;
			Disciplina d = disciplinaFacade.consultar(id);
			d.setCodDisciplina(codDisciplina);
			d.setNomeDisciplina(nomeDisciplina);
			d.setId(id);
			
			disciplinaFacade.alterar(d);
			
            disciplinas = disciplinaFacade.consultarTodos();
			addActionMessage("A disciplina foi editada corretamente.");
			return "view";			
		}
		
		if(remover != null){
			remover = null;
			Disciplina d = disciplinaFacade.consultar(idDisciplina);
			if(d != null){
				disciplinaFacade.remover(d);
	            disciplinas = disciplinaFacade.consultarTodos();
				addActionMessage("A disciplina foi removida corretamente.");
				return "view";
			}			
		}
		
		if(menu != null){
			menu = null;
			return "menu";
		}
		return "menu";
	}
	
	public String cadastraDisciplina() throws Exception {
		disciplinas = disciplinaFacade.consultarTodos();
		cursos = cursoFacade.consultarTodos();

		return "view";
	}
	

//	----------------------------------------------------
//				Gets e sets
//	----------------------------------------------------
	public String getEditar() {
		return editar;
	}

	public void setEditar(String editar) {
		this.editar = editar;
	}

	public String getNomeDisciplina() {
		return nomeDisciplina;
	}

	public void setNomeDisciplina(String nomeDisciplina) {
		this.nomeDisciplina = nomeDisciplina;
	}

	public String getCodDisciplina() {
		return codDisciplina;
	}

	public void setCodDisciplina(String codDisciplina) {
		this.codDisciplina = codDisciplina;
	}

	public String getRemover() {
		return remover;
	}

	public void setRemover(String remover) {
		this.remover = remover;
	}

	public String getAdicionar() {
		return adicionar;
	}

	public void setAdicionar(String adicionar) {
		this.adicionar = adicionar;
	}

	public String getConsultar() {
		return consultar;
	}

	public void setConsultar(String consultar) {
		this.consultar = consultar;
	}

	public Collection<Disciplina> getDisciplinas() {
		return disciplinas;
	}
	public void setDisciplinas(Collection<Disciplina> disciplinas) {
		this.disciplinas = disciplinas;
	}
	public Collection<Curso> getCursos() {
		return cursos;
	}
	public void setCursos(Collection<Curso> cursos) {
		this.cursos = cursos;
	}
	public Long getIdCurso() {
		return idCurso;
	}
	public void setIdCurso(Long idCurso) {
		this.idCurso = idCurso;
	}
	public DisciplinaFacade getDisciplinaFacade() {
		return disciplinaFacade;
	}
	public void setDisciplinaFacade(DisciplinaFacade disciplinaFacade) {
		this.disciplinaFacade = disciplinaFacade;
	}
	public CursoFacade getCursoFacade() {
		return cursoFacade;
	}
	public void setCursoFacade(CursoFacade cursoFacade) {
		this.cursoFacade = cursoFacade;
	}
	public String getMenu() {
		return menu;
	}
	public void setMenu(String menu) {
		this.menu = menu;
	}
	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	public Long getIdDisciplina() {
		return idDisciplina;
	}
	public void setIdDisciplina(Long idDisciplina) {
		this.idDisciplina = idDisciplina;
	}




	
	
}
